package edu.avans.hartigehap.service;

import java.util.List;

import org.joda.time.DateTime;

import edu.avans.hartigehap.domain.*;
import edu.avans.hartigehap.domain.decorator.AbstractMenuItem;
import edu.avans.hartigehap.domain.decorator.TestIngredient;

public interface BillService {
	public List<LocalBill> findAll();
	public Bill findBillById(Long billId);
	public void billHasBeenPaid(Bill bill) throws StateException;
	public Long createInternetBill(String restaurantName);
	public List<Bill> findSubmittedBillsForRestaurant(Restaurant restaurant);
	public Bill save(Bill bill);
	
	public void addOrderItem(Bill bill, String menuItemName) throws StateException;
	public void addOrderItemIngredient(Bill bill, TestIngredient testIngredient, MenuItem menuItem) throws StateException;
	public void deleteOrderItem(Bill bill, String menuItemName) throws StateException;
	public void submitOrder(Bill bill, Customer customer, Restaurant restaurant) throws StateException, EmptyBillException;
	public void submitBill(Bill bill) throws StateException, EmptyBillException;
	public void delete(Long id);
	
	public boolean compareDate(DateTime date); 
}
